/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package org.cursoexperto.jftf.jsf.pack;

import java.math.BigDecimal;
import java.util.List;
import javax.faces.context.FacesContext;
import org.cursoexperto.jftf.controller.CategoriaJpaController;
import org.cursoexperto.jftf.controller.ProductoJpaController;
import org.cursoexperto.jftf.entidades.Producto;
import org.cursoexperto.jftf.entidades.Categoria;

/**
 *
 * @author Jose Fernando
 */
public class BusquedaProdController {

    public BusquedaProdController() {
        FacesContext facesContext = FacesContext.getCurrentInstance();
        jpaProdController = (ProductoJpaController) facesContext.getApplication().getELResolver().getValue(facesContext.getELContext(), null, "productoJpa");
        jpaCatController = (CategoriaJpaController) facesContext.getApplication().getELResolver().getValue(facesContext.getELContext(), null, "categoriaJpa");        
        producto = new Producto();
    }
    private Producto producto = null;
    private Long idCategoria = null;
    private List<Producto> productoBus = null;
    private BigDecimal precioInferior = null;
    private BigDecimal precioSuperior = null;
    private ProductoJpaController jpaProdController = null;
    private CategoriaJpaController jpaCatController = null;


    public Producto getProducto() {
        if (producto == null) {
            producto = new Producto();
        }
        return producto;
    }


    /**
     * Metodo action que realiza la busqueda por los criterios dado mediante los datos
     * recogidos por el formulario y redirije a la siguiente pagina.
     * @return Devuelve la redireccion
     */
    public String busca(){
        Categoria cat = jpaCatController.findCategoria(idCategoria);
        producto.setIdCategoria(cat);
        productoBus = jpaProdController.findProductoEntitiesByQuery(producto,precioInferior,precioSuperior);
        producto = null;
        idCategoria = null;
        precioInferior = null;
        precioSuperior = null;
        return "producto_listado_bus";
    }

    /**
     * @return the productoBus
     */
    public List<Producto> getProductoBus() {
        return productoBus;
    }

    /**
     * @param productoBus the productoBus to set
     */
    public void setProductoBus(List<Producto> productoBus) {
        this.productoBus = productoBus;
    }

    /**
     * @return the idCategoria
     */
    public Long getIdCategoria() {
        return idCategoria;
    }

    /**
     * @param idCategoria the idCategoria to set
     */
    public void setIdCategoria(Long idCategoria) {
        this.idCategoria = idCategoria;
    }

    /**
     * @return the precioInferior
     */
    public BigDecimal getPrecioInferior() {
        return precioInferior;
    }

    /**
     * @param precioInferior the precioInferior to set
     */
    public void setPrecioInferior(BigDecimal precioInferior) {
        this.precioInferior = precioInferior;
    }

    /**
     * @return the precioSuperior
     */
    public BigDecimal getPrecioSuperior() {
        return precioSuperior;
    }

    /**
     * @param precioSuperior the precioSuperior to set
     */
    public void setPrecioSuperior(BigDecimal precioSuperior) {
        this.precioSuperior = precioSuperior;
    }


}
